using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;

namespace Traceability.Domain
{
    /// <summary>
    /// 公司证号信息实体
    /// </summary>
    /// <remarks>
    /// 该实体用于存储和管理公司的许可证信息，包括公司名称、生产许可证及其生产批次
    /// 继承自BaseEntity，包含所有基础字段如Id、创建和修改信息等
    /// </remarks>
    public class CompanyLicense : BaseEntity
    {
        /// <summary>
        /// 证号信息主键
        /// </summary>
        /// <remarks>
        /// 证号信息的唯一标识符
        /// </remarks>
        [Key]
        public int LicenseId { get; set; }

        /// <summary>
        /// 公司名称
        /// </summary>
        /// <remarks>
        /// 持有许可证的公司完整名称
        /// </remarks>
        public string CompanyName { get; set; } = string.Empty;

        /// <summary>
        /// 生产许可证
        /// </summary>
        /// <remarks>
        /// 企业持有的法定生产许可证编号，用于验证企业的合法生产资质
        /// </remarks>
        public string ProductionLicense { get; set; } = string.Empty;

        /// <summary>
        /// 生产批次
        /// </summary>
        /// <remarks>
        /// 产品的生产批次编号，用于产品追溯和质量管理
        /// </remarks>
        [StringLength(50, ErrorMessage = "生产批次长度不能超过50个字符")]
        public string ProductionBatch { get; set; } = string.Empty;

        /// <summary>
        /// 许可证有效期开始日期
        /// </summary>
        /// <remarks>
        /// 生产许可证的生效日期
        /// </remarks>
        public DateTime ValidFrom { get; set; }

        /// <summary>
        /// 许可证有效期结束日期
        /// </summary>
        /// <remarks>
        /// 生产许可证的到期日期
        /// </remarks>

        public DateTime ValidTo { get; set; }
    }
} 